package com.tencreat.service.account;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tencreat.domain.account.AccountLoginCheck;
import com.tencreat.domain.account.CodeAndType;
import com.tencreat.domain.account.MallUser;
import com.tencreat.domain.account.dto.UpdateNewPhoneDTO;
import com.tencreat.domain.account.vo.ResAccountLogin;
import com.tencreat.domain.account.dto.AccountLoginDTO;
import com.tencreat.domain.account.dto.AccountPhoneAndCodeDTO;
import com.tencreat.domain.account.dto.AccountRegisterDTO;
import com.tencreat.common.core.HttpResult;
import com.tencreat.common.core.domain.model.LoginUser;
import com.tencreat.common.core.domain.model.ReqIdParam;
import com.tencreat.common.core.domain.model.ReqIdsParam;

import java.util.List;

/**
 * 登录 用户类型Service接口
 *
 * @author tencreat
 * @date 2021-09-06
 */
public interface IAccountLoginCheckService extends IService<AccountLoginCheck> {
	/**
	 * 查询登录 用户类型
	 *
	 * @param id 登录 用户类型ID
	 * @return 登录 用户类型
	 */
	public AccountLoginCheck selectAccountLoginCheckById(ReqIdParam id);

	/**
	 * 查询登录 用户类型列表
	 *
	 * @param accountLoginCheck 登录 用户类型
	 * @return 登录 用户类型集合
	 */
	public List<AccountLoginCheck> selectAccountLoginCheckList(AccountLoginCheck accountLoginCheck);

	/**
	 * 新增登录 用户类型
	 *
	 * @param accountLoginCheck 登录 用户类型
	 * @return 结果
	 */
	public int insertAccountLoginCheck(AccountLoginCheck accountLoginCheck);

	/**
	 * 修改登录 用户类型
	 *
	 * @param accountLoginCheck 登录 用户类型
	 * @return 结果
	 */
	public int updateAccountLoginCheck(AccountLoginCheck accountLoginCheck);

	/**
	 * 批量删除登录 用户类型
	 *
	 * @param ids 需要删除的登录 用户类型ID
	 * @return 结果
	 */
	public int deleteAccountLoginCheckByIds(ReqIdsParam ids);

	/**
	 * 删除登录 用户类型信息
	 *
	 * @param id 登录 用户类型ID
	 * @return 结果
	 */
	public int deleteAccountLoginCheckById(ReqIdParam id);

	/**
	 * 用户登录
	 *
	 * @param accountLoginPo
	 * @return
	 */
	HttpResult<ResAccountLogin> login(AccountLoginDTO accountLoginPo);

	/**
	 * 用户注册
	 *
	 * @param accountRegisterPo
	 * @return
	 */
	HttpResult<String> register(AccountRegisterDTO accountRegisterPo);

	/**
	 * 忘记密码
	 *
	 * @param accountPhoneAndCodePO
	 * @Author wangbingcheng
	 * @Date 2021年09月11日
	 * @Return
	 */
	HttpResult<String> forgetPassword(AccountPhoneAndCodeDTO accountPhoneAndCodePO);

	HttpResult<String> updatePassword(AccountPhoneAndCodeDTO accountPhoneAndCodePO);

	HttpResult<String> chickPhone(CodeAndType codeAndType, LoginUser loginUser);

	/**
	 * 更改手机号
	 * @param updateNewPhoneDTO 入参
	 */
	void changePhone(UpdateNewPhoneDTO updateNewPhoneDTO);

	void updatePhone(UpdateNewPhoneDTO updateNewPhoneDTO, Long uuid);



}
